home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Chat & Communication / Digsby build 37 / digsby_setup.exe / lib / PIL / PSDraw.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2008-10-13  |  5KB  |  94 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. import EpsImagePlugin
  5. import string
  6.  
  7. class PSDraw:
  8.     
  9.     def __init__(self, fp = None):
  10.         if not fp:
  11.             import sys as sys
  12.             fp = sys.stdout
  13.         
  14.         self.fp = fp
  15.  
  16.     
  17.     def begin_document(self, id = None):
  18.         self.fp.write('%!PS-Adobe-3.0\nsave\n/showpage { } def\n%%EndComments\n%%BeginDocument\n')
  19.         self.fp.write(EDROFF_PS)
  20.         self.fp.write(VDI_PS)
  21.         self.fp.write('%%EndProlog\n')
  22.         self.isofont = { }
  23.  
  24.     
  25.     def end_document(self):
  26.         self.fp.write('%%EndDocument\nrestore showpage\n%%End\n')
  27.         if hasattr(self.fp, 'flush'):
  28.             self.fp.flush()
  29.         
  30.  
  31.     
  32.     def setfont(self, font, size):
  33.         if not self.isofont.has_key(font):
  34.             self.fp.write('/PSDraw-%s ISOLatin1Encoding /%s E\n' % (font, font))
  35.             self.isofont[font] = 1
  36.         
  37.         self.fp.write('/F0 %d /PSDraw-%s F\n' % (size, font))
  38.  
  39.     
  40.     def setink(self, ink):
  41.         print '*** NOT YET IMPLEMENTED ***'
  42.  
  43.     
  44.     def line(self, xy0, xy1):
  45.         xy = xy0 + xy1
  46.         self.fp.write('%d %d %d %d Vl\n' % xy)
  47.  
  48.     
  49.     def rectangle(self, box):
  50.         self.fp.write('%d %d M %d %d 0 Vr\n' % box)
  51.  
  52.     
  53.     def text(self, xy, text):
  54.         text = string.joinfields(string.splitfields(text, '('), '\\(')
  55.         text = string.joinfields(string.splitfields(text, ')'), '\\)')
  56.         xy = xy + (text,)
  57.         self.fp.write('%d %d M (%s) S\n' % xy)
  58.  
  59.     
  60.     def image(self, box, im, dpi = None):
  61.         if not dpi:
  62.             if im.mode == '1':
  63.                 dpi = 200
  64.             else:
  65.                 dpi = 100
  66.         
  67.         x = float(im.size[0] * 72) / dpi
  68.         y = float(im.size[1] * 72) / dpi
  69.         xmax = float(box[2] - box[0])
  70.         ymax = float(box[3] - box[1])
  71.         if x > xmax:
  72.             y = y * xmax / x
  73.             x = xmax
  74.         
  75.         if y > ymax:
  76.             x = x * ymax / y
  77.             y = ymax
  78.         
  79.         dx = (xmax - x) / 2 + box[0]
  80.         dy = (ymax - y) / 2 + box[1]
  81.         self.fp.write('gsave\n%f %f translate\n' % (dx, dy))
  82.         if (x, y) != im.size:
  83.             sx = x / im.size[0]
  84.             sy = y / im.size[1]
  85.             self.fp.write('%f %f scale\n' % (sx, sy))
  86.         
  87.         EpsImagePlugin._save(im, self.fp, None, 0)
  88.         self.fp.write('\ngrestore\n')
  89.  
  90.  
  91. EDROFF_PS = '/S { show } bind def\n/P { moveto show } bind def\n/M { moveto } bind def\n/X { 0 rmoveto } bind def\n/Y { 0 exch rmoveto } bind def\n/E {    findfont\n        dup maxlength dict begin\n        {\n                1 index /FID ne { def } { pop pop } ifelse\n        } forall\n        /Encoding exch def\n        dup /FontName exch def\n        currentdict end definefont pop\n} bind def\n/F {    findfont exch scalefont dup setfont\n        [ exch /setfont cvx ] cvx bind def\n} bind def\n'
  92. VDI_PS = '/Vm { moveto } bind def\n/Va { newpath arcn stroke } bind def\n/Vl { moveto lineto stroke } bind def\n/Vc { newpath 0 360 arc closepath } bind def\n/Vr {   exch dup 0 rlineto\n        exch dup neg 0 exch rlineto\n        exch neg 0 rlineto\n        0 exch rlineto\n        100 div setgray fill 0 setgray } bind def\n/Tm matrix def\n/Ve {   Tm currentmatrix pop\n        translate scale newpath 0 0 .5 0 360 arc closepath\n        Tm setmatrix\n} bind def\n/Vf { currentgray exch setgray fill setgray } bind def\n'
  93. ERROR_PS = '/landscape false def\n/errorBUF 200 string def\n/errorNL { currentpoint 10 sub exch pop 72 exch moveto } def\nerrordict begin /handleerror {\n    initmatrix /Courier findfont 10 scalefont setfont\n    newpath 72 720 moveto $error begin /newerror false def\n    (PostScript Error) show errorNL errorNL\n    (Error: ) show\n        /errorname load errorBUF cvs show errorNL errorNL\n    (Command: ) show\n        /command load dup type /stringtype ne { errorBUF cvs } if show\n        errorNL errorNL\n    (VMstatus: ) show\n        vmstatus errorBUF cvs show ( bytes available, ) show\n        errorBUF cvs show ( bytes used at level ) show\n        errorBUF cvs show errorNL errorNL\n    (Operand stargck: ) show errorNL /ostargck load {\n        dup type /stringtype ne { errorBUF cvs } if 72 0 rmoveto show errorNL\n    } forall errorNL\n    (Execution stargck: ) show errorNL /estargck load {\n        dup type /stringtype ne { errorBUF cvs } if 72 0 rmoveto show errorNL\n    } forall\n    end showpage\n} def end\n'
  94.